/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controller;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;

import javax.swing.JOptionPane;

import model.ModelRecibirENVT;
import tiendagui.internal.JInternalFrameEnvT;
import tiendagui.internal.JInternalFrameImpl;
import controller.utils.ControllerTable;
import entities.vo.Articulo;
import entities.vo.ArticuloEnvtVO;
import entities.vo.ArticuloVO;
import entities.vo.ENVTVO;
import entities.vo.ItemTablaVO;

/**
 *
 * @author Jhonny
 */
public class ControllerRecibirENVT extends Controller implements ControllerTable{

	private ENVTVO envt;
    public ControllerRecibirENVT(JInternalFrameImpl dialog, ModelRecibirENVT model) {
        super(dialog,model);
    }

    @Override
    public void initComponentView() throws FileNotFoundException,IOException{
        List<ArticuloEnvtVO> articulos = null;
        envt= ((ModelRecibirENVT)model).getENVT(dialog.getPath());
        articulos = ((ModelRecibirENVT)model).getArticulosENVT(envt.getArticulos());
        envt.setArticulos(articulos);
        List<ItemTablaVO> items = new LinkedList<ItemTablaVO>();
        items.addAll(articulos);
        initDatosTabla(((JInternalFrameEnvT)dialog).getTable(),items);
        if(articulos.size()<=0){
        	JOptionPane.showMessageDialog(dialog, "No se encontro una PALC Asociada.");
        	
        }else{
        	initDatos();
        }
        
    }
    private void initDatos() {
		if(envt!=null){
			((JInternalFrameEnvT)dialog).setIdCentroDistribucion(envt.getIdCentroDist());
			((JInternalFrameEnvT)dialog).setIdTienda(envt.getIdTienda());
			((JInternalFrameEnvT)dialog).setNroEnvt(envt.getNroEnvt());
			((JInternalFrameEnvT)dialog).setIdNroPalc(envt.getNroPalc());
		}
	}

	private List<ArticuloEnvtVO> getArticulosEnvt(List<Articulo> articulos) {
    	List<ArticuloEnvtVO> list = new LinkedList<ArticuloEnvtVO>();
    	ArticuloVO articulo=null;
    	ArticuloEnvtVO articuloEnvt = null;
		for (Articulo articuloStock : articulos) {
			articuloEnvt = new ArticuloEnvtVO();
			articulo= model.getArticulo(articuloStock.getReferencia());
			if(articulo!=null){
				articuloEnvt.setReferencia(articulo.getReferencia());
				articuloEnvt.setStockActual(articulo.getStock());
				articuloEnvt.setCantidadRecibida(articuloStock.getStock());
				articuloEnvt.setCantidadPendiente(articulo.getStock() - articuloStock.getStock());
				list.add(articuloEnvt);
			}
		}
		return list;
	}

	@Override
    public ArticuloVO getArticulo(Integer referencia) {
        return model.getArticulo(referencia);
    }

   

    public void recibirENVT(List<ItemTablaVO> list) {
        List<Articulo> articulos = new LinkedList<Articulo>();
        for (ItemTablaVO item : list) {
            articulos.add((Articulo) item);
        }

        ((ModelRecibirENVT)model).recibirENVT(articulos);
    }

    @Override
    public ItemTablaVO getArticulo() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

	public void aceptar() {	
		if(envt!=null && envt.getArticulos().size()>0){
			try{
				JOptionPane.showMessageDialog(null,((ModelRecibirENVT)model).recibirENVT(envt));
			}catch (Exception e) {
				
				JOptionPane.showMessageDialog(dialog, "No se puede Registrar el envio a Tiendas.");
				logger.log(Level.SEVERE, e.getLocalizedMessage(), e.fillInStackTrace());
			}
		}else{
			JOptionPane.showMessageDialog(dialog, "No se puede Registrar el envio a Tiendas.");
		}
	}

	@Override
	public void postAgregar() {
	}

	@Override
	public void postEliminar() {
	}

}
